package com.zzw.springboot.mapper;

import com.zzw.springboot.bean.PurchaseItem;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 采购单明细DAO接口
 */
public interface PurchaseItemMapper {
    /**
     * 批量添加采购单明细
     * @param items 采购单明细列表
     * @return 影响行数
     */
    int insertPurchaseItems(List<PurchaseItem> items);

    /**
     * 添加采购单明细
     * @param item 采购单明细信息
     * @return 影响行数
     */
    int insertPurchaseItem(PurchaseItem item);

    /**
     * 更新采购单明细
     * @param item 采购单明细信息
     * @return 影响行数
     */
    int updatePurchaseItem(PurchaseItem item);

    /**
     * 删除采购单明细
     * @param itemId 明细ID
     * @return 影响行数
     */
    int deletePurchaseItem(Integer itemId);

    /**
     * 根据采购单ID删除明细
     * @param purchaseId 采购单ID
     * @return 影响行数
     */
    int deletePurchaseItemByPurchaseId(Integer purchaseId);

    /**
     * 批量删除采购单时删除相关明细
     * @param purchaseIds 采购单ID数组
     * @return 影响行数
     */
    int deletePurchaseItemByPurchaseIds(Integer[] purchaseIds);

    /**
     * 根据ID查询采购单明细
     * @param itemId 明细ID
     * @return 采购单明细信息
     */
    PurchaseItem selectPurchaseItemById(Integer itemId);

    /**
     * 根据采购单ID查询明细列表
     * @param purchaseId 采购单ID
     * @return 采购单明细列表
     */
    List<PurchaseItem> selectPurchaseItemsByPurchaseId(Integer purchaseId);

    /**
     * 更新已入库数量
     * @param itemId 明细ID
     * @param receivedQuantity 已入库数量
     * @return 影响行数
     */
    int updateReceivedQuantity(@Param("itemId") Integer itemId, @Param("receivedQuantity") Integer receivedQuantity);
}
